第7.1节 朴素贝叶斯算法
各位朋友大家好,欢迎来到月来客栈,我是掌柜空字符。
本期推送内容目录如下,如果本期内容对你有所帮助,欢迎点赞、转发支持掌柜!
7.1 朴素贝叶斯算法 7.1.1 概念介绍 7.1.2 理解朴素贝叶斯 7.1.3 计算示例 7.1.4 求解步骤 7.1.5 小结 引用
7.1 朴素贝叶斯算法
在前面几章内容中,笔者分别介绍了一种回归模型和两种分类模型及模型的改善与泛化。在接下来的一章中,笔者将介绍下一个新的分类模型——朴素贝叶斯(Naive Bayes, NB)。什么是朴素贝叶斯呢?从名字也可以看出,朴素贝叶斯算法与贝叶斯公式有着莫大的关联,说得简单点朴素贝叶斯就是由贝叶斯公式加“朴素”这一条件所构成的。
在看贝叶斯算法的相关内容时,相信各位读者一定会被突如其来的数学概念搞得头昏脑涨。例如先验概率(Prior Probability)、后验概率(Posteriori Probability)、极大似然估计(Maximum Likelihood Estimation)、极大后验概率估计(Maximum A Posteriori Estimation)等,所以接下来笔者将先简单地介绍一下这几个概念,让读者先对这部分内容有一个感性的认识,然后继续介绍后面的内容。
7.1.1 概念介绍
1. 先验概率
所谓先验概率指的是根据历史经验得出来的概率。例如可以通过西瓜的颜色、敲击的声音来判断其是否成熟。因为已经有了通过颜色和声音来判断的“经验”,不管这个经验是自己学会的还是别人告诉的。又如在某二分类数据集中,其中正样本有4个,负样本有6个,通过这个数据集能够学习到的先验知识便是任取一个样本,其为正样本的可能性为40%,为负样本的可能性为60%。最后再举个例子,假如办公室失窃了,理论上每个人都可能是小偷,但可以根据对每个人的了解分析得出一个可能性,例如张三偷窃的可能性为20%,李四偷窃的可能性为30%,王五偷窃的可能性为50%,而这就被称为先验概率,它是通过历史经验得来的。
2. 后验概率
所谓后验概率指的是通过贝叶斯公式推断得到的结果。例如上述例子中,不可能因为负样本出现的可能性为60%就判定任意取出的样本为负样本,也不能因为王五偷窃的可能性最大就判定每次办公室失窃都是由他所为。先验知识只能帮助我们先取得一个大致的判断,而事实情况需要根据先验概率和条件概率进行计算。
3. 极大后验概率估计
一言以蔽之,极大后验概率指的是在所有后验概率中选择其中最大的一个。例如上述例子中,根据先验概率和条件概率便可以计算出每个样本属于正样本还是负样本的后验概率。最后在判断该样本属于何种类别时,挑选后验概率最大的类别即可。
4. 极大似然估计
所谓极大似然估计(最大似然估计)指的是用来估计使当前已知结果最有可能发生的模型参数值(参见3.4.3节)。例如上述例子中,已知的当前结果为正样本有4个,负样本有6个。那么什么样的模型参数能够使这一结果最可能发生呢?此时只需最大化式 (7.1)。
其中,p为属于正样本的概率。
7.1.2 理解朴素贝叶斯
由贝叶斯公式可知
假设为最终的分类标签,为一系列的特征属性,那么在使用朴素贝叶斯进行样本分类的时候,实际计算的应该就是每个样本在当前的特征取值为A的情况下,它属于类别B的概率,因此,当进一步计算出特征值属于每个类别的概率后,再挑选概率值最大时所对应的类别即可作为该样本的分类,但是,在实际情况中对于A和B之间的联合概率分布是不知道的,说得直白点就是我们并不知道数据集的生成规则,但是可通过先验概率分布乘以条件概率分布来得到联合分布,即公式(7.2)可转换为
现在假设输入空间,为维向量的集合,输出空间为类标记,输入为特征向量,输出为类标记。同时, 是定义在输入空间上的随机向量,是定义在输出空间上的随机变量,也就是说是一个的矩阵,为类标签。是和的联合概率分布,训练集由独立同分布产生。
根据上面的分析可知,可以通过学习数据的先验分布,再学习数据的条件概率分布,即可得到联合概率分布。具体地,对于每个类别来讲其先验概率分布为
其中,表示该类别一共有多少个样本,表示样本总数。
同时,对于已知类标下的条件概率分布为
其中,表示第个特征的取值。
从式(7.5)可知,在实际情况中想要知道其条件概率是不能的,因此朴素贝叶斯对条件概率分布又做了条件独立性假设,即,而这也是“朴素”一词的由来。故式(7.5)可改写为
由此,根据式(7.3)的分析可知,对于已知特征属性在的条件下,其属于类别的后验概率为
进一步,将式(7.6)代入式(7.7)可得
于是,朴素贝叶斯分类器可以表示为
即通过计算出任意样本属于类别的概率后,选择其中概率最大者作为其分类的类标,但是,我们发现在式(7.9)中,对于每个样本的后验概率的计算来讲,其都有相同的分母,因此,式(7.9)可进一步简化为
注意:的含义是,使取最大值时的取值。
虽然朴素贝叶斯算法看似做了一个极其简单的假设,但是其在实际的运用过程中却有着不错的效果,尤其是在文档分类和垃圾邮件分类场景下仅需要少量数据集就能获得不错的效果[1]。